package comgame.scenes;

import java.util.HashMap;
import java.util.Map;

public class ItemManager {
    // 单例模式
    private static ItemManager instance;
    
    // 物品数据
    private Map<String, Integer> items = new HashMap<>();
    
    // 物品价格数据
    private Map<String, Integer> itemPrices = new HashMap<>();
    
    private ItemManager() {
        // 初始化种子
        items.put("胡萝卜种子", 0);
        items.put("土豆种子", 0);
        items.put("星果种子", 0);
        items.put("番茄种子", 0);
        items.put("小麦种子", 0);
        // 初始化特殊作物种子
        items.put("南瓜种子", 0);
        items.put("霜瓜种子", 0);
        items.put("幽灵辣椒种子", 0);
        items.put("水龙果种子", 0);
        items.put("齐瓜种子", 0);
        // 初始化收获的作物
        items.put("胡萝卜", 0);
        items.put("土豆", 0);
        items.put("星果", 0);
        items.put("番茄", 0);
        items.put("小麦", 0);
        // 初始化特殊作物
        items.put("南瓜", 0);
        items.put("霜瓜", 0);
        items.put("幽灵辣椒", 0);
        items.put("水龙果", 0);
        items.put("齐瓜", 0);
        // 新增装备
        items.put("幽灵靴子", 0);
        items.put("空间之主靴子", 0);
        items.put("幽灵胸甲", 0);
        items.put("空间之主胸甲", 0);
        items.put("幽灵头盔", 0);
        items.put("喜庆之翼", 0);
        items.put("空间之主头盔", 0);
        items.put("幽灵护腿", 0);
        items.put("空间之主护腿", 0);
        items.put("幽灵剑", 0);
        items.put("无头骑士剑", 0);
        items.put("泰拉棱镜", 0);
        // 老装备
        items.put("普通剑", 0);
        items.put("铁剑", 0);
        items.put("金剑", 0);
        items.put("钻石剑", 0);
        items.put("普通头盔",0);
        items.put("铁头盔", 0);
        items.put("金头盔", 0);
        items.put("钻石头盔", 0);
        items.put("普通胸甲",0);
        items.put("铁胸甲", 0);
        items.put("金胸甲", 0);
        items.put("钻石胸甲", 0);
        items.put("普通护腿", 0);
        items.put("铁护腿", 0);
        items.put("金护腿", 0);
        items.put("钻石护腿", 0);
        items.put("普通靴子", 0);
        items.put("铁靴子", 0);
        items.put("金靴子", 0);
        items.put("钻石靴子", 0);
        // 初始化工具
        items.put("水桶", 0);
        items.put("锄头", 0);
        items.put("心形", 0);
        // 初始化钓鱼物品
        items.put("钓上来的头骨", 0);
        items.put("稀有破烂", 0);
        items.put("石头", 0);
        items.put("臭靴子", 0);
        items.put("木头", 0);
        // 初始化材料类物品
        items.put("史莱姆凝胶", 0); // Item_Slime
        items.put("昆虫肉", 0); // Item_Bug_Meat
        // 初始化第三轮献祭物品
        items.put("世纪之花", 0);
        // 初始化物品价格
        itemPrices.put("臭靴子", 7); // 臭鞋子价格7金币
        itemPrices.put("钓上来的头骨", 7);
        itemPrices.put("稀有破烂", 50);
        itemPrices.put("石头", 5);
        itemPrices.put("木头", 7);
        // 初始化材料类物品价格
        itemPrices.put("史莱姆凝胶", 2);
        itemPrices.put("昆虫肉", 5);
        System.out.println("ItemManager初始化完成，共初始化 " + items.size() + " 种物品");
    }
    
    public static ItemManager getInstance() {
        if (instance == null) {
            instance = new ItemManager();
        }
        return instance;
    }

    public static void resetInstance() {
        instance = null;
    }
    
    // 添加物品
    public void addItem(String itemName, int count) {
        int currentCount = items.getOrDefault(itemName, 0);
        items.put(itemName, currentCount + count);
        System.out.println("添加物品: " + itemName + " +" + count + " (当前: " + (currentCount + count) + ")");
    }
    
    // 获取物品数量
    public int getItemCount(String itemName) {
        return items.getOrDefault(itemName, 0);
    }
    
    // 获取所有物品
    public Map<String, Integer> getAllItems() {
        return new HashMap<>(items);
    }
    
    // 检查是否有指定物品
    public boolean hasItem(String itemName) {
        return items.containsKey(itemName) && items.get(itemName) > 0;
    }
    
    // 移除物品
    public void removeItem(String itemName, int count) {
        int currentCount = items.getOrDefault(itemName, 0);
        if (currentCount >= count) {
            items.put(itemName, currentCount - count);
            System.out.println("移除物品: " + itemName + " -" + count + " (当前: " + (currentCount - count) + ")");
        } else {
            System.out.println("警告: 尝试移除物品 " + itemName + " 但数量不足 (当前: " + currentCount + ", 需要: " + count + ")");
        }
    }
    
    // 获取物品价格
    public int getItemPrice(String itemName) {
        return itemPrices.getOrDefault(itemName, 0);
    }
    
    // 获取所有物品价格
    public Map<String, Integer> getAllItemPrices() {
        return new HashMap<>(itemPrices);
    }
}
//ee